{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "2d1a8374",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import h5py\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sbn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "e765bc71",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential\"</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1mModel: \"sequential\"\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃<span style=\"font-weight: bold\"> Layer (type)                    </span>┃<span style=\"font-weight: bold\"> Output Shape           </span>┃<span style=\"font-weight: bold\">       Param # </span>┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ flatten (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Flatten</span>)               │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">4260000</span>)        │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)               │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">4260000</span>)        │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                   │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │   <span style=\"color: #00af00; text-decoration-color: #00af00\">136,320,032</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)             │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,056</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)             │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,056</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_3 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)             │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_3 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,056</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_4 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)             │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_4 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,056</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_5 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)             │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_5 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,056</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_6 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)             │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_6 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,056</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_7 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)             │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_7 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,056</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_8 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)             │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_8 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,056</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_9 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)             │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_9 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,056</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_10 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_10 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,056</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_11 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_11 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,056</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_12 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_12 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,056</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_13 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_13 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,056</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_14 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_14 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,056</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_15 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_15 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,056</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_16 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_16 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">25</span>)             │           <span style=\"color: #00af00; text-decoration-color: #00af00\">825</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_17 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">25</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
       "</pre>\n"
      ],
      "text/plain": [
       "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃\u001b[1m \u001b[0m\u001b[1mLayer (type)                   \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape          \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m      Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ flatten (\u001b[38;5;33mFlatten\u001b[0m)               │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m4260000\u001b[0m)        │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout (\u001b[38;5;33mDropout\u001b[0m)               │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m4260000\u001b[0m)        │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense (\u001b[38;5;33mDense\u001b[0m)                   │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │   \u001b[38;5;34m136,320,032\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_1 (\u001b[38;5;33mDropout\u001b[0m)             │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_1 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │         \u001b[38;5;34m1,056\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_2 (\u001b[38;5;33mDropout\u001b[0m)             │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_2 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │         \u001b[38;5;34m1,056\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_3 (\u001b[38;5;33mDropout\u001b[0m)             │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_3 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │         \u001b[38;5;34m1,056\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_4 (\u001b[38;5;33mDropout\u001b[0m)             │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_4 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │         \u001b[38;5;34m1,056\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_5 (\u001b[38;5;33mDropout\u001b[0m)             │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_5 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │         \u001b[38;5;34m1,056\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_6 (\u001b[38;5;33mDropout\u001b[0m)             │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_6 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │         \u001b[38;5;34m1,056\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_7 (\u001b[38;5;33mDropout\u001b[0m)             │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_7 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │         \u001b[38;5;34m1,056\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_8 (\u001b[38;5;33mDropout\u001b[0m)             │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_8 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │         \u001b[38;5;34m1,056\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_9 (\u001b[38;5;33mDropout\u001b[0m)             │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_9 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │         \u001b[38;5;34m1,056\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_10 (\u001b[38;5;33mDropout\u001b[0m)            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_10 (\u001b[38;5;33mDense\u001b[0m)                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │         \u001b[38;5;34m1,056\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_11 (\u001b[38;5;33mDropout\u001b[0m)            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_11 (\u001b[38;5;33mDense\u001b[0m)                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │         \u001b[38;5;34m1,056\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_12 (\u001b[38;5;33mDropout\u001b[0m)            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_12 (\u001b[38;5;33mDense\u001b[0m)                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │         \u001b[38;5;34m1,056\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_13 (\u001b[38;5;33mDropout\u001b[0m)            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_13 (\u001b[38;5;33mDense\u001b[0m)                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │         \u001b[38;5;34m1,056\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_14 (\u001b[38;5;33mDropout\u001b[0m)            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_14 (\u001b[38;5;33mDense\u001b[0m)                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │         \u001b[38;5;34m1,056\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_15 (\u001b[38;5;33mDropout\u001b[0m)            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_15 (\u001b[38;5;33mDense\u001b[0m)                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │         \u001b[38;5;34m1,056\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_16 (\u001b[38;5;33mDropout\u001b[0m)            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_16 (\u001b[38;5;33mDense\u001b[0m)                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m25\u001b[0m)             │           \u001b[38;5;34m825\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_17 (\u001b[38;5;33mDropout\u001b[0m)            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m25\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">409,010,093</span> (1.52 GB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m409,010,093\u001b[0m (1.52 GB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">136,336,697</span> (520.08 MB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m136,336,697\u001b[0m (520.08 MB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Optimizer params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">272,673,396</span> (1.02 GB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Optimizer params: \u001b[0m\u001b[38;5;34m272,673,396\u001b[0m (1.02 GB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#  Load the model\n",
    "model = tf.keras.models.load_model('NN2_L16_N32_E500_25words_SNRs_11_30_dBs.keras')\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "fc469c66",
   "metadata": {},
   "outputs": [],
   "source": [
    "def load_mat_file(file_path, matrix_name):\n",
    "    with h5py.File(file_path, 'r') as file:\n",
    "        matrix = file[matrix_name][()]\n",
    "    return matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "40daf099",
   "metadata": {},
   "outputs": [],
   "source": [
    "def load_data(base_path, folders, matrix_name):\n",
    "    data_list = []\n",
    "    labels_list = []\n",
    "    for label, folder in enumerate(folders):\n",
    "        folder_path = os.path.join(base_path, folder)\n",
    "        for file_name in os.listdir(folder_path):\n",
    "            if file_name.endswith('.mat'):\n",
    "                file_path = os.path.join(folder_path, file_name)\n",
    "                matrix = load_mat_file(file_path, matrix_name)\n",
    "                data_list.append(matrix)\n",
    "                labels_list.append(label)\n",
    "    return np.array(data_list), np.array(labels_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "6bf3b97f",
   "metadata": {},
   "outputs": [],
   "source": [
    "def preprocess_data(data):\n",
    "    # Normalize data\n",
    "    data = data.astype(np.float32)\n",
    "    data /= np.max(data)\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "bcbb517a",
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_test_dataset(data, labels, batch_size=64):\n",
    "    dataset = tf.data.Dataset.from_tensor_slices((data, labels))\n",
    "    dataset = dataset.batch(batch_size)\n",
    "    dataset = dataset.prefetch(tf.data.AUTOTUNE)\n",
    "    return dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "a904f473",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m3/3\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 67ms/step - accuracy: 0.4438 - loss: 2.6698\n",
      "Test Loss: 2.902318000793457, Test Accuracy: 0.4266666769981384\n",
      "\u001b[1m3/3\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 112ms/step\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2025-10-07 15:56:13.943176: W tensorflow/core/framework/local_rendezvous.cc:404] Local rendezvous is aborting with status: OUT_OF_RANGE: End of sequence\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Update the path for test data\n",
    "test_base_path = 'psths_NormalHearing_SNRs_10_5_0dB'\n",
    "\n",
    "# Update folder names\n",
    "test_folders = ['gas', 'lot', 'live', 'south', 'size',\n",
    "                'gap', 'reach', 'jug', 'hurl', 'chief',\n",
    "                'pike', 'cheek', 'kill', 'goose', 'bean',\n",
    "                'late', 'hall', 'met', 'pole', 'yearn',\n",
    "                'haze', 'doll', 'limb', 'dip', 'shirt']\n",
    "\n",
    "# Update with the matrix name in .mat files\n",
    "test_matrix_name = 'psth_SUM'  # \n",
    "\n",
    "# Load and preprocess test data\n",
    "test_data, test_labels = load_data(test_base_path, test_folders, test_matrix_name)\n",
    "test_data = preprocess_data(test_data)\n",
    "\n",
    "# Create TensorFlow dataset for testing\n",
    "test_batch_size = 32\n",
    "test_dataset = create_test_dataset(test_data, test_labels, test_batch_size)\n",
    "\n",
    "# Evaluate the model on the test dataset\n",
    "loss, accuracy = model.evaluate(test_dataset)\n",
    "print(f\"Test Loss: {loss}, Test Accuracy: {accuracy}\")\n",
    "\n",
    "y_pred = model.predict(test_dataset)\n",
    "y_pred = tf.argmax(y_pred, axis=1)\n",
    "y_true = tf.concat(list(test_dataset.map(lambda s,lab: lab)), axis=0)\n",
    "\n",
    "confusion_mtx = tf.math.confusion_matrix(y_true, y_pred)\n",
    "plt.figure(figsize=(6, 5))\n",
    "sbn.heatmap(confusion_mtx,\n",
    "            xticklabels=test_folders,\n",
    "            yticklabels=test_folders,\n",
    "            annot=True, fmt='g')\n",
    "plt.xlabel('Prediction', fontsize=12)\n",
    "plt.ylabel('Label', fontsize=12)\n",
    "plt.tick_params(axis='both', which='major', labelsize=12)\n",
    "plt.yticks(rotation=0);\n",
    "plt.xticks(rotation=90);"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
